/**
 * @type {JSFoundSet<db:/infocom/cheques>}
 * @properties={typeid:35,uuid:"D980F688-CC14-4ED2-8D11-98C704B52F6E",variableType:-4}
 */
var fs_cheques = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'cheques');

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"BA910659-1872-4FE8-8BA3-95245C326B89",variableType:4}
 */
var es_nro_manual = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"5A1A23E9-9EC4-4878-A171-F223E2AEEF36",variableType:4}
 */
var es_preview = 0;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"5D6E6788-9209-4027-95ED-A491FAD93147"}
 */
var fcheque_nro = null;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"14E06FCD-CE4B-4FEA-B69A-3BFBB961FDCE",variableType:93}
 */
var fFecha_rechazo = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"B2047C38-7FA8-4A14-998E-82604A9E62B8",variableType:8}
 */
var fimporte_gastos = null;

/**
 * @properties={typeid:24,uuid:"D957D451-3B81-4214-8D4F-809EB86671C4"}
 * @AllowToRunInFind
 */
function confirmar()
{
	if (fcheque_nro==null ||fcheque_nro==0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar número de cheque','OK');
		return false;
	}
  
// TOTALES SIN IVA	para nota por cheque rechazado
calculo_total_sin_iva();

// VALIDA  campos

	if (cliente_id == null){
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar Cliente','OK');
		return false;
	}
	if (cod_mov_cc == null){
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar tipo de nota','OK');
		return false;
	}  
	if (subtotal1 <= 0){
		globals.DIALOGS.showWarningDialog('Aviso','Total de la nota no puede ser cero ','OK');
		return false;
	}
	if (cond_pago_id == null){
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar Condicion de Pago','OK');
		return false;
	}
	if (fecha_vencimiento == null){
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar Fecha Vencimiento','OK');
		return false;
	}
	if (fimporte_gastos == null){
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar el importe de gastos bancarios','OK');
		return false;
	}
	if (globals.zparam_usa_proyecto == 1 && proyecto_id == null){
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar el proyecto','OK');
		return false;
	}
	
	//OTROS CAMPOS de cabecera que no se piden 
	cod_mov_cc=43;   //  no cambiar de tab_mov_cl ni el codigo 44 
	importe_en_letras = globals.nro_a_letra(total)
	tipo_doc=fac_cabecera_to_tab_mov_cl.tipo_mov;
    if (es_nro_manual==0)
    {  //no es manual
	// BUSCAR NUMERO de nota de la sucursal/letra/tipo docum que corresponde
		var fs_nro_fc = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'numeracion_cl')
		fs_nro_fc.loadAllRecords()
		fs_nro_fc.find()
		fs_nro_fc.sucursal=sucursal
		fs_nro_fc.letra=letra
		tipo_doc=fac_cabecera_to_tab_mov_cl.tipo_mov
		fs_nro_fc.cod_comprobante=fac_cabecera_to_tipo_doc.cod_doc_asociado
		var found=fs_nro_fc.search()
		if (found != 1)
	    {
		   globals.DIALOGS.showWarningDialog('Aviso','Sucursal o Letra o Tipo de comprobante incorrectos','OK');
		   return false;
     	}
    	else
     	{	
	  		fs_nro_fc.setSelectedIndex(1)
			// usa nro_aux para no cambiar en la tabla hasta comprobar que no existe
	  		var nro_aux= fs_nro_fc.ultimo_numero + 1
     	}
	}
    else // es manual  
    {
    	nro_aux=nro_factura;
    }	
	// validar si existe en fac_cabecera 
	globals.fac_cabecera_duplicacion(letra,sucursal,nro_aux, tipo_doc)
	if (globals.fact_filas!=0)  // si es cero, la factura no existe
		{ // ya existe , lo rechaza
		globals.DIALOGS.showWarningDialog('Aviso','Ya existe ' + fac_cabecera_to_tipo_doc.descripcion + ' ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_aux,'00000000'),'OK')
		return false;
		}
	
    if (es_nro_manual==0) 
    {  //no es manual  y no existe, asigna sig. numero
		fs_nro_fc.ultimo_numero = fs_nro_fc.ultimo_numero + 1
		nro_factura=fs_nro_fc.ultimo_numero // pone nro factura en renglon
    } 

//  CTACTE   de la nota debito por cheque rechazado SIN IVA
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.newRecord();
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.cliente_id	= cliente_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.fecha_mov	= fecha
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.nro_factura	= nro_factura
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.cod_mov		= cod_mov_cc  
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.sucursal		= sucursal
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.letra		= letra
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.fecha_vto	= fecha_vencimiento
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.saldo		= total 
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.provincia_id	= fac_cabecera_to_clientes.provincia_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.importe		= total
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.neto			= subtotal2 
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva			= iva1_imp     
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva_porc		= iva1_porc 
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.cond_pago_id	= cond_pago_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.tipo_doc		= tipo_doc;
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.proyecto_id 	= proyecto_id
	
//  FAC_DETALLE   nota debito por rechazo del cheque
	fac_cabecera_to_fac_detalle.newRecord();
	fac_cabecera_to_fac_detalle.producto_id=999999
	fac_cabecera_to_fac_detalle.precio_unitario=subtotal1
	fac_cabecera_to_fac_detalle.cantidad_dec=1
	fac_cabecera_to_fac_detalle.total_renglon=subtotal1
	fac_cabecera_to_fac_detalle.texto=fac_cabecera_to_tab_mov_cl.descripcion
	
//  guarda estos datos para dar alta de la nota por gastos bancarios codigo=44
	var aux_cliente_id=cliente_id;
	var aux_fecha=fecha;
	var aux_fecha_vencimiento=fecha_vencimiento;
	var aux_letra=letra;
	var aux_sucursal=sucursal;
	var aux_texto='Gastos Bancarios por cheque Rechazado nro. ' + fcheque_nro;
	var aux_cond_pago=cond_pago_id;
	var aux_nro_nota_43=nro_factura;
	
	
// GENERA NOTA DEBITO BANCARIO solo cuando HAY GASTOS
	//if (fimporte_gastos!= null && fimporte_gastos > 0) //  26/04/2012
	if (fimporte_gastos > 0) //  26/04/2012
	{
//  FAC_CABECERA   nota debito por gastos bancarios CON IVA con el importe ingresado
	controller.newRecord();
	
	fs_nro_fc.ultimo_numero = fs_nro_fc.ultimo_numero + 1;  
	nro_factura=fs_nro_fc.ultimo_numero;

	cliente_id=aux_cliente_id;
	cod_mov_cc=44;
	cond_pago_id=aux_cond_pago;
	fecha=aux_fecha;
	fecha_vencimiento=aux_fecha_vencimiento;
	letra=aux_letra;
	sucursal=aux_sucursal;
	texto=aux_texto;
	tipo_doc=fac_cabecera_to_tab_mov_cl.tipo_mov;

	// importe de la nota por gastos = lo pide por pantalla
	subtotal1=fimporte_gastos;
	// TOTALES CON IVA  para nota de gastos bancarios
	calculo_total();
	importe_en_letras = globals.nro_a_letra(total)

//  CTACTE   nota debito por gastos bancarios CON IVA con el importe ingreado
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.newRecord()
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.cliente_id	= cliente_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.fecha_mov	= fecha
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.nro_factura	= nro_factura
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.cod_mov		= cod_mov_cc
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.sucursal		= sucursal
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.letra		= letra
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.fecha_vto	= fecha_vencimiento
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.saldo		= total
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.provincia_id	= fac_cabecera_to_clientes.provincia_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.importe		= total
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.neto			= subtotal2 
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva			= iva1_imp     
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva_porc		= iva1_porc
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.cond_pago_id	= cond_pago_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.tipo_doc		= tipo_doc
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.proyecto_id 	= proyecto_id
	
//  FAC_DETALLE   nota debito por gastos bancarios 
	fac_cabecera_to_fac_detalle.newRecord();
	fac_cabecera_to_fac_detalle.producto_id=999999
	fac_cabecera_to_fac_detalle.precio_unitario=subtotal2
	fac_cabecera_to_fac_detalle.cantidad_dec=1
	fac_cabecera_to_fac_detalle.total_renglon=subtotal2
	fac_cabecera_to_fac_detalle.texto=fac_cabecera_to_tab_mov_cl.descripcion
	}  //  26/04/2012
	
if(fs_cheques.estado==globals.zconf_chq_depositado)	 // 27/03/2012
{  
// CYB - alta  en banco donde rebotó  si fue depositado
	/** @type {JSFoundSet<db:/infocom/movim_cyb>}*/
	var fs_movim_cyb=databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'movim_cyb');
	fs_movim_cyb.newRecord();
	fs_movim_cyb.cheque_id			= fs_cheques.cheque_id; 
	fs_movim_cyb.cod_movim			= globals.zconf_cyb_cod_movim_egreso;
	fs_movim_cyb.concepto			= 'Cheque rechazado nro. ' + fs_cheques.cheque_nro; 
	fs_movim_cyb.cuentas_cyb_id		= fs_cheques.cheques_to_boleta_detalle.boleta_detalle_to_boleta_cabecera.boleta_cabecera_to_cuentas_cyb.cuentas_cyb_id; // relacion dada de alta 11/03/2011
	fs_movim_cyb.empresa_id			= cliente_id; 
	fs_movim_cyb.fecha_movim		= fFecha_rechazo;
	fs_movim_cyb.fecha_conciliacion = null;
	fs_movim_cyb.marca_conciliacion	= 0;
	fs_movim_cyb.importe			= fs_cheques.importe;
	fs_movim_cyb.imputacion_id		= globals.zconf_cyb_imputacion_cheque_rechazado;
	fs_movim_cyb.moneda_id			= fs_cheques.moneda_id;  
	fs_movim_cyb.referencia			= fs_cheques.cheque_nro;
	fs_movim_cyb.valor_id			= fs_cheques.valor_id;
	fs_movim_cyb.proyecto_id 		= proyecto_id
}
// CHEQUES  - estado del cheque = rechazado
	fs_cheques.estado = globals.zconf_chq_rechazado;

// GRABAR todo
	var estado_save=databaseManager.saveData()
	if (estado_save==true)
	{
		var $msj
		if (fimporte_gastos!= null && fimporte_gastos > 0) //  26/04/2012  
		{
			$msj ='Nota Debito Cheque Rechazado ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(aux_nro_nota_43,'00000000') + ' y Nota Debito Gastos Bancarios ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_factura,'00000000') +
		                  '\nGeneradas correctamente' + '\nRecuerde imprimirlas'
		}                 
		else       
		{
			$msj ='Nota Debito Cheque Rechazado ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(aux_nro_nota_43,'00000000') +
		                  '\nGenerada correctamente' + '\nRecuerde imprimirla'
		}              
		globals.DIALOGS.showInfoDialog('Generador de Notas de Credito y Debito',  $msj, "Ok" )
		Iniciar()  //  cuando de habilite la impresion hay que quitar este iniciar
	}
	else
	{
		globals.DIALOGS.showInfoDialog('Generador de Notas por Cheque Rechazado y Gastos Bancarios',  'Las Notas NO fueron generadas ',  "OK")
	}
	return true
}

/**
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"4ED06F00-156D-4F62-8701-769C30074331"}
 */
function ver_cond_iva_cliente() 
{
	letra=fac_cabecera_to_clientes.clientes_to_relacion_iva_letra.rel_iva_letra
	ver_existe_ctacte();
	return true
}

/**
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"B1D2BEDC-9F12-4F5F-833F-B781D87AADEA"}
 */
function calculo_vto() 
{   
	if (fecha != null)
	{
		fecha_vencimiento=fecha		
		fecha_vencimiento=fecha_vencimiento.setDate (fecha.getDate() + fac_cabecera_to_cond_pago.dias);
		elements.texto.requestFocus()
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','Fecha del comprobante no informada','OK')
	}
	return true;
}

/**
 * @properties={typeid:24,uuid:"897ED369-4103-477D-BC47-F68E118E2DA0"}
 */
function Iniciar() 
{
	databaseManager.setAutoSave(false);
	controller.newRecord();
	fecha = application.getServerTimeStamp()
	fFecha_rechazo = fecha
	iva1_imp=globals.gIva;
	descuento=null
	es_nro_manual=0;
	elements.nro_factura.editable=false;
	es_preview = 0;
	cod_mov_cc=43;       // 09/03/2011;
	fcheque_nro=null;    // 09/03/2011;
	fimporte_gastos=null // 09/03/2011;
}

/**
 *
 * @properties={typeid:24,uuid:"032EB2F4-BAEA-44CF-9F7B-E143EFCD4F68"}
 */
function calculo_total() 
{
	// ver % de iva de donde tomar ///////////////////////////////////
	iva1_porc= globals.gPorc_iva_emisor	
	// anulado por ahora=no se hace descuento- tambien se quitan los campos del form	
	//subtotal2 = subtotal1 - (subtotal1 * descuento / 100)
	subtotal2 = subtotal1  
    iva1_imp = subtotal2 * iva1_porc / 100;
	total = subtotal2 + iva1_imp
}

/**
 * @returns {Boolean} allow hide
 *
 * @properties={typeid:24,uuid:"F2C2D7C9-A4CC-438A-9895-919FF2575932"}
 */
function salir_fac() 
{  // si salia del facturador sin haber confirmado, luego en el form que se usaba a 
   // continuacion no grababa los resistros que se daban de alta 19/11/2009
	if (es_preview== 0)
	{
	    var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea salir sin confirmar?' ,  'Si', 'No')
		if (resp == 'Si')
		{
			databaseManager.revertEditedRecords()
		}
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"7EF0A311-53AD-42E1-B390-554E60FEDEBA"}
 */
function Cancelar() 
{
	databaseManager.revertEditedRecords()
	Iniciar();
}

/**
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"D7C2E5C6-C73A-48C7-BE75-49907B16EA84"}
 */
function ver_es_nro_manual() 
{  
	if (es_nro_manual==1)
	{
		elements.nro_factura.requestFocus();
		elements.nro_factura.editable=true;	
	}
	else
	{
		elements.nro_factura.editable=false;
		nro_factura=null; 
	}
	return true
}

/**
 *
 * @properties={typeid:24,uuid:"8426B2E9-7973-45C2-9EA3-8BCA8B1A7D10"}
 */
function ver_existe_ctacte() 
{	
	if (es_nro_manual==1)
	{
		// validar en fac_cabecera  01/10/2010
		globals.fac_cabecera_duplicacion(letra,sucursal,nro_factura, tipo_doc)
		if (globals.fact_filas!=0)  // si es cero, la factura no existe
		{
			globals.DIALOGS.showWarningDialog('Aviso','Ya existe comprobante ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_factura,'00000000'),'OK')
		}
	}
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"9DC35590-30FC-4285-8620-C20CF80C7F8C"}
 * @AllowToRunInFind
 */
function onDataChange_cheque_nro(oldValue, newValue, event) 
{
	if (fcheque_nro==null ||fcheque_nro==0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar número de cheque','OK')
		return true;
	}
	
	//var fs_cheques_1 = databaseManager.getFoundSet(controller.getServerName(),'cheques'); //27/03/2012 definida en el form
	var estado_find=fs_cheques.find();
	if (estado_find == false)
	{
		globals.DIALOGS.showWarningDialog('Aviso','No pudo buscar en cheques','OK')
		return false;
	}
	fs_cheques.cheque_nro=fcheque_nro;
	fs_cheques.rec_detalle_id='!=null';
	
	var found=fs_cheques.search();
	if (found == 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','No se encontró cheque con ese número','OK')
		return false;
	}
	if (found != 1)
	{
		globals.DIALOGS.showWarningDialog('Aviso','El cheque está ingresado más de una vez','OK')
		return false;
	}
	if (fs_cheques.estado!=globals.zconf_chq_depositado &&
		fs_cheques.estado!=globals.zconf_chq_entregado_pago)
	{ // solo 3 ó 2 (repect.)   //  16/03/2012
		var estado_texto=globals.TabDetalles_Texto('estado_cheque',fs_cheques.estado)  //  04/04/2012
		if (estado_texto == false) // si vuelve con false=fallo el find
		   return false;
		if (estado_texto != null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso','ERROR - El Cheque tiene estado ' + estado_texto,'OK')
		}
		else
		{	
			globals.DIALOGS.showWarningDialog('Aviso','ERROR - Falta cargar descripción del estado ' + fs_cheques.estado +' en Tablas_detalle','OK')
		}
		fcheque_nro = null;
		return false;	
	}
	if (fs_cheques.cheques_to_rec_detalle.rec_detalle_to_rec_cabecera.codigo_movimiento == globals.zconf_rec_cod_mov_recibo)  // 1
	{
		if (fs_cheques.cheques_to_rec_detalle.rec_detalle_to_rec_cabecera.cliente_id != cliente_id)  // crear relacion
		{
			globals.DIALOGS.showWarningDialog('Aviso','El cheque no corresponde al cliente','OK')
			return false;
		}
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','El cheque no corresponde a cobranza de clientes','OK')
		return false;
	}
	
	subtotal1 = fs_cheques.importe;
	return true
}

/**
 * @properties={typeid:24,uuid:"1DEF7F16-C4B0-4231-989F-32BE88A9935A"}
 */
function calculo_total_sin_iva() // 09/03/2011
{	//nota debito por cheque rechazado NO TIENE IVA 
	iva1_porc=0	
	// anulado por ahora=no se hace descuento	
	//subtotal2 = subtotal1 - (subtotal1 * descuento / 100)
	subtotal2 = subtotal1  
    iva1_imp=0 
	total=subtotal2;
}
